package com.ithailong.reconsitutionmassion.exception;



import com.google.protobuf.ServiceException;
import com.ithailong.reconsitutionmassion.exception.ServicesException;
import com.ithailong.reconsitutionmassion.common.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 定义一个全局异常处理器，
 * 捕获ServiceException类型的异常，
 * 并将异常信息封装为Result对象返回给前端。
 * @author 17930
 */
@ControllerAdvice  //它是Spring MVC提供的一个注解，
// 用于定义全局异常处理器。通过在类上添加@ControllerAdvice注解，
// 该类就成为了一个全局异常处理器，可以捕获系统中抛出的异常，并根据需要进行处理。
public class GlobalExceptionHandler {
    @ExceptionHandler(ServicesException.class)//注解用于指定需要捕获的异常类型。在这段代码中，
    // @ExceptionHandler(ServiceException.class)
    // 表示只捕获ServiceException类型的异常。
    @ResponseBody//注解表示方法的返回值将被直接写入HTTP响应体中，而不是通过视图解析器进行解析
    public Result handle(ServicesException se) {//handle方法是异常处理方法，用于处理捕获到的异常。在这个方法中，根据ServiceException的信息，构造一个Result对象，并返回给前端。
        return Result.error(se.getCode(), se.getMessage());
    }
}
